package de.haw.ai3.bs.aufgabe3.a2;

import java.util.Arrays;

import de.haw.ai3.bs.aufgabe3.a2.table.Table;


public class Smoker extends Thread {

	private int no;
	private Zutat imBesitz;

	private Table table;

	public Smoker(int no, Zutat besitz, Table table) {
		this.no = no;
		this.imBesitz = besitz;
		this.table = table;
	}

	@Override
	public void run() {
		while (!isInterrupted()) {
			try {
				table.nehmen(this);
				drehen();
				rauchen();
			} catch (InterruptedException e) {
				interrupt();
			}
		}
	}

	private void rauchen() throws InterruptedException {
		System.err.println(String.format("%s raucht...", this));
		sleep(5000);
	}

	private void drehen() throws InterruptedException {
		System.err.println(String.format("%s dreht...", this));
		sleep(3000);
	}

	public Zutat getImBesitz() {
		return imBesitz;
	}

	public boolean mirFehlen(Zutat zutat1, Zutat zutat2) {
		return Arrays.asList(zutat1, zutat2).contains(imBesitz);
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + no;
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Smoker other = (Smoker) obj;
		if (no != other.no)
			return false;
		return true;
	}

	@Override
	public String toString() {
		return "Smoker [" + no + "]";
	}

}
